///PHILOTES Source Code.  (C)2012 PhiloLabs
#pragma once

#ifndef __FrameListener_H__
#define __FrameListener_H__


#include "OgrePrerequisites.h"

namespace Ogre {

	
	
	
    struct FrameEvent
    {
        
        Real timeSinceLastEvent;
        
        Real timeSinceLastFrame;
    };


    
    class _OgreExport FrameListener
    {
        /*
        Note that this could have been an abstract class, but I made
        the explicit choice not to do this, because I wanted to give
        people the option of only implementing the methods they wanted,
        rather than having to create 'do nothing' implementations for
        those they weren't interested in. As such this class follows
        the 'Adapter' classes in Java rather than pure interfaces.
        */
    public:
        
        virtual bool frameStarted(const FrameEvent& evt)
        { (void)evt; return true; }
		
		
		virtual bool frameRenderingQueued(const FrameEvent& evt)
                { (void)evt; return true; }

        
        virtual bool frameEnded(const FrameEvent& evt)
        { (void)evt; return true; }

		virtual ~FrameListener() {}
		
    };
	
	
}

#endif
